struct node;

/* return the result of "adding" an element to the front of the given list */
struct node *add (char *newFirst, struct node *list);

/* return an empty list */
struct node *emptyList ( );

/* determine if a list is empty */
int isEmpty (struct node *list);

/* return the first element of the given list */
char *first (struct node *list);

/* return the rest of the given list (all elements after the first) */
struct node *rest (struct node *list);
